home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 11 / Cream of the Crop 11-2.iso / os2 / adept106.zip / ADPREXX.DOC < prev    next >
Text File  |  1995-12-21  |  71KB  |  2,255 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.      ----------------------------------------------------------------------
  8.  
  9.                               AdeptXBBS REXX INTERFACE
  10.  
  11.                         Copyright (c) 1993 - 1996 by AdeptSoft
  12.                       portions Copyright (c)  1991-1994 M. Kimes
  13.                                  All Rights Reserved
  14.  
  15.                           AdeptSoft, AdeptXBBS, GateKeeper,
  16.                               are trademarks of AdeptSoft.
  17.  
  18.        "XBBS"  Copyright (c) 1988 - 1994 by M. Kimes. The "XBBS" name is a
  19.                               Trademark of M. Kimes.
  20.                                        
  21.  
  22.      ----------------------------------------------------------------------
  23.  
  24.                                                    
  25.  
  26.  
  27.  
  28.  
  29.  
  30.                                   Table Of Contents
  31.      CONTACTING AdeptSoft                                                   1
  32.      ADEPT REXX INTERFACE                                                   2
  33.       Standard and Extended REXX Programs:                                  3
  34.       Why ERX files?                                                        3
  35.       Proper REXX Programming Syntax:                                       4
  36.      ADEPT REXX INTERFACE CALLS                                             5
  37.       AdeptCall                                                             5
  38.       AdeptChainRexx                                                        6
  39.       AdeptChainRexxNc                                                      7
  40.       AdeptChangeGroup                                                      7
  41.       AdeptCheckBit                                                         7
  42.       AdeptCls                                                              8
  43.       AdeptComFlush                                                         8
  44.       AdeptComWrite                                                         8
  45.       AdeptConvert                                                          9
  46.       AdeptComDial                                                          9
  47.       AdeptComDoDTR                                                         9
  48.       AdeptDropGlobalVar                                                   10
  49.       AdeptFile                                                            10
  50.       AdeptGetGlobalVar                                                    11
  51.       AdeptGetVar and AdeptPutVar                                          11
  52.       AdeptHitReturn                                                       15
  53.       AdeptInKey                                                           15
  54.       AdeptInput                                                           15
  55.       AdeptLibrary                                                         16
  56.       AdeptLocation                                                        17
  57.       AdeptLog                                                             17
  58.       AdeptMenu                                                            18
  59.       AdeptMenuType                                                        18
  60.       AdeptMessage                                                         18
  61.       AdeptMore                                                            19
  62.       AdeptPause                                                           19
  63.       AdeptPeekByte                                                        19
  64.       AdeptPrint                                                           20
  65.       AdeptPrintL                                                          20
  66.       AdeptPutC                                                            20
  67.       AdeptPutKey                                                          21
  68.       AdeptRead                                                            21
  69.       AdeptRecv                                                            22
  70.       AdeptRexxKillThread                                                  22
  71.       AdeptRexxStartThread                                                 22
  72.       AdeptSend                                                            23
  73.       AdeptSetBit                                                          24
  74.       AdeptSetGlobalVar                                                    24
  75.       AdeptSetTimer                                                        24
  76.       AdeptShow                                                            24
  77.       AdeptSleep                                                           25
  78.       AdeptTimedInKey                                                      26
  79.       AdeptTimeLeft                                                        26
  80.       AdeptTimerUp                                                         26
  81.       AdeptUnsetBit                                                        27
  82.       AdeptComWaitConnect                                                  27
  83.       AdeptWaitKey                                                         27
  84.  
  85.  
  86.  
  87.  
  88.  
  89.       AdeptWrite                                                           27
  90.       AfSysAddIndexEntries                                                 28
  91.       AfSysClose                                                           29
  92.       AfSysDeleteIndexEntries                                              29
  93.       AfSysOpen                                                            30
  94.      CTRL AND OTHER KEYS AND THEIR RETURN CODES                            35
  95.      REPORTING BUGS                                                        36
  96.  
  97.  
  98.  
  99.  
  100.  
  101.      __________________________
  102.      _ _ CONTACTING AdeptSoft _
  103.      __________________________
  104.  
  105.      AdeptSoft is located in Boca Raton, Florida.  Our current mailing
  106.      address is:
  107.                         AdeptSoft
  108.                         3465 NW 27th Avenue
  109.                         Boca Raton, FL 33434
  110.  
  111.      AdeptSoft can be reached via the following methods:
  112.      Telnet:     bbs.adeptsoft.com
  113.      FTP   :     ftp.adeptsoft.com
  114.      WWW   :     WWW.adeptsoft.com
  115.      FidoNet:    1:18/210.0@Fidonet
  116.  
  117.      You may also contact us at our support BBS at the number:
  118.  
  119.      (407) 477-6310, 28.8K
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.      1
  156.  
  157.  
  158.  
  159.  
  160.  
  161.      __________________________
  162.      _ _ ADEPT REXX INTERFACE _
  163.      __________________________
  164.  
  165.      AdeptXBBS comes with two 'menu' systems, the standard text, ASCII
  166.      based menu system and a REXX sub-system.  The REXX sub-system included
  167.      with the BBS software allows all basic menu functions with some
  168.      additional flexibility.
  169.  
  170.      We also offer, still in development, a complete REXX API sub-system that
  171.      gives even the novice programmer total control over the BBS software.
  172.  
  173.      With the AdeptXBBS REXX API Programming module you get access to all
  174.      available memory variables,  all internal functions,  and complete
  175.      unrestricted access to all running nodes at one time.
  176.  
  177.      This is an extremely powerful module, giving total control over the
  178.      entire BBS.  For programmers wishing to write their own programs in a
  179.      simple language, yet maintain the speed and flexibility of AdeptXBBS
  180.      this is for you.  We also have utilities that allow you to ship your
  181.      programs without making the source code available to the end user.
  182.  
  183.      For more information about the REXX Programming module contact
  184.      AdeptSoft.
  185.  
  186.      Adept contains a REXX interface to the BBS functions.  This allows you
  187.      to create your own scripts to execute from Adept.  By using REXX
  188.      functions alone you can completely customize Adept.
  189.  
  190.      Two types of REXX commands can be automatically executed by Adept. To
  191.      be executed they need only exist in the .\Menus directory.
  192.  
  193.      Main.Cmd or Main?.Cmd
  194.      This REXX script is executed INSTEAD OF the default menu system.
  195.  
  196.      AtEnd.Cmd or AtEnd?.Cmd
  197.      This REXX script is executed after the user logs off (or the default
  198.      script has ended) The BPS rate will be zero and the time left will be
  199.      five minutes. This script is executed before the user info is saved to
  200.      the user data base.
  201.  
  202.      AtStart.Cmd or AtStart?.Cmd
  203.      This REXX script is executed at logon. The filename with the line number
  204.      is executed in place of 'AtStart.Cmd' if it exists.
  205.  
  206.      Exception.Cmd           
  207.      This REXX script is executed if a exception violation occurs.  You can
  208.      use this script to notify the user of what just happened.  And to help
  209.      assist us by asking the user what they where doing when the exception
  210.      happened.
  211.  
  212.      ConvertXXX.Cmd
  213.      Where 'XXX' is a file extension of a type of file you wish to convert to
  214.      another format.  For instance, if you want to convert ARC files to ZIP,
  215.      2
  216.  
  217.  
  218.  
  219.  
  220.  
  221.      you would create a ConvertARC.CMD ConvertARC.Cmd would then convert the
  222.      file, if the file is converted it creates a file called "xxxxx.NewName"
  223.      where 'xxxxx' is the file name (without the extension)  This file
  224.      contains 1 line, the line has the new filename of the file after it was
  225.      converted.  Adept will use this filename when it puts the file info into
  226.      the file system.
  227.  
  228.      ChatReq.Cmd or ChatReq?.Cmd  
  229.      Where '?' is the line number. 
  230.  
  231.      Fax.Cmd or Fax?.Cmd  
  232.      Where '?' is the line number. Executed when modem returns a fax result
  233.      code.
  234.  
  235.  
  236.  
  237.      Standard and Extended REXX Programs:
  238.      Several things will change in reference to the REXX system in this next
  239.      beta.  We will no longer run .CMD file.  We have decided to call .CMD
  240.      files .SRX (Standard REXX) files.  This will pave the way for .ERX
  241.      (Extended REXX) files.  .ERX files are preprocessed REXX files for use
  242.      with Adept.  Sysops who own the REXX module will be able to execute .ERX
  243.      files.  Sysops who do not will ONLY be able to execute .SRX files.
  244.  
  245.  
  246.  
  247.      Why ERX files?
  248.      ERX files are REXX files that have been preprocessed with the
  249.      AdeptREXX Processor (SrToErx).  ERX files are typically 50% smaller and
  250.      always faster then standard REXX files (When run Cached).
  251.  
  252.      We are asking that people who write rexx scripts for Adept that are not
  253.      pre-processed please use the extension .SRX.  The preprocessor will ONLY
  254.      process files with the .SRX extension.
  255.  
  256.      SrxToErx.Exe FileNameWithoutExtention will yield a file with the same
  257.      name, but the .ERX extension.  If you are a commercial developer is
  258.      recommended that you preprocess your rexx .SRX files before distributing
  259.      them.  Also it recommended that you DO NOT preprocess the following!
  260.  
  261.      Atstart.Cmd - This MUST remain a .CMD file.  So that others may modify
  262.      it and chain needed rexx scripts (preprocessed or not) from it.
  263.  
  264.      The BBS software will look for .ERX versions of files that we feel are
  265.      ok to pre-process.  In fact if you are running a .SRX file (i.e. .cmd)
  266.      file in cached mode (as we default to) it is treated as a .ERX file
  267.      after we preprocess it internally.  So it is honestly recommended that
  268.      you do not preprocess anything that you are NOT going to be
  269.      distributing.
  270.  
  271.  
  272.  
  273.      Proper REXX Programming Syntax:
  274.      ALL REXX functions in the software unless you are looking for a value
  275.      3
  276.  
  277.  
  278.  
  279.  
  280.  
  281.      should be called with the CALL function NOT with the () method.
  282.  
  283.      i.e.
  284.      call AdeptChainRexx "RexxCmdFile.Cmd", line
  285.  
  286.      NOT - AdeptChainRexx("RexxCmdFile.Cmd", line)
  287.  
  288.      The second one will usually not work correctly.  The first works.
  289.  
  290.      Also you should try to use the call functioname ANY time you are not get
  291.      a value back 
  292.  
  293.      i.e.
  294.      call AdeptPrint line, "This is a line to print"
  295.      key = AdeptWaitKey(line)
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.      4
  336.  
  337.  
  338.  
  339.  
  340.  
  341.      ________________________________
  342.      _ _ ADEPT REXX INTERFACE CALLS _
  343.      ________________________________
  344.  
  345.      Adept registers functions which can be called from the REXX interpreter.
  346.      These calls are used to interface a REXX script to Adept.  When Adept
  347.      starts a REXX script, it passes along the line number as the first
  348.      argument to the function.  The REXX script should store that line number
  349.      because it must be passed back to the AdeptREXX functions as the first
  350.      parameter.
  351.  
  352.      Remember to Start every REXX script with /* <text if any> */ then on
  353.      the next line (or the one after) Do the following ..
  354.  
  355.          ARG Line
  356.          *OR*
  357.          ARG LineNumber
  358.  
  359.      Remember, if you use "Line", then all your REXX Function must have the
  360.      first parameter as "Line". If you use "LineNumber" then all your REXX
  361.      functions must have the first parameter as "LineNumber".  If you have
  362.      used ARG Line and in a function you have put "LineNumber" (where it's
  363.      supposed to be) then nothing will happen :), so you must remember to
  364.      always use the same argument that you started with.
  365.  
  366.          ** Example **
  367.  
  368.          You used ARG Line so all your Functions (AdeptPrint, AdeptCall,
  369.          AdeptInput, etc..) will have to be passed like so ..
  370.  
  371.          call AdeptPrint Line,"String"
  372.  
  373.          and NOT
  374.  
  375.          call AdeptPrint LineNumber, "String"
  376.  
  377.      It is the same if you have the two reversed. So really, where ever you
  378.      see "LineNumber" in this file, you replace it With the Argument you
  379.      stated at the beginning of the REXX Script.
  380.  
  381.  
  382.      AdeptCall
  383.      call AdeptCall LineNumber, Type, Flags, String1, ..., StringN
  384.      or
  385.      value = AdeptCall(LineNumber, Type, Flags, String1, ..., StringN)
  386.  
  387.      Runs an external program.
  388.  
  389.          LineNumber:
  390.          Line number. Passed to REXX routine from Adept as first parameter.
  391.          Type:
  392.                 1   Same as menu item 801. Spawn a separate session. Strings
  393.                     are concatenated to form one string which is used as the
  394.                     spawn string. Can be used for a door program that 
  395.      5
  396.  
  397.  
  398.  
  399.  
  400.  
  401.                     accesses the com port in a more traditional (and 
  402.                     complicated) fashion.
  403.                     You can run DOS doors here also.
  404.                 Flags:
  405.                 1  Start session in background.
  406.  
  407.                 2   Same as menu item 802. Run OS/2 type door.
  408.                     (same as menu item 800 but assumes a program which is 
  409.                     more friendly to having its I/O redirected thru pipes to 
  410.                     the com port.)  Program must allow itself to be killed.
  411.                     Flags:
  412.                           Not Used.
  413.                 3   Same as menu item 800. Run OS/2 type door. Program must 
  414.                     allow itself to be killed.
  415.                     Flags:
  416.                           Not Used.
  417.          Flags:
  418.                 Only used for Type 1 call.  If flag is 1, then the program is
  419.                 started in the background.
  420.          String1..N:
  421.                 Strings are added together to form one string which is used 
  422.                 to spawn the session.
  423.  
  424.          Returns:
  425.                 Return code from the spawning function.  0 usually indicates
  426.                 success.
  427.  
  428.          All sessions inherit Adepts environment.
  429.  
  430.          ** Example **
  431.  
  432.          call AdeptCall Linenumber,1,,'cmd.exe /c twar.bat'
  433.  
  434.  
  435.          This would call the batch file twar.bat and run TradeWars in the
  436.          Foreground.
  437.  
  438.  
  439.  
  440.          AdeptChainRexx
  441.          call AdeptChainRexx "RexxScriptName", LineNumber
  442.          or
  443.          Value = AdeptChainRexx("RexxScriptName", LineNumber)
  444.  
  445.          Chains REXX files within REXX files.  Runs the rexx script in 
  446.          cached mode.
  447.  
  448.          LineNumber:
  449.                  Line number. Passed to REXX routine from Adept as first
  450.                  parameter.
  451.          RexxScriptName:
  452.                  Name and path of file you want to run.
  453.  
  454.  
  455.      6
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.          AdeptChainRexxNc
  463.          call AdeptChainRexxNc "RexxScriptName", LineNumber
  464.          or
  465.          Value = AdeptChainRexxNc("RexxScriptName", LineNumber)
  466.  
  467.          Chains REXX files within REXX files.  Runs the rexx script in 
  468.          Non-cached mode. Once the script is cached, it is cached (in 
  469.          memory until you shut down your copy of Adept.
  470.  
  471.          LineNumber:
  472.                  Line number. Passed to REXX routine from Adept as first
  473.                  parameter.
  474.          RexxScriptName:
  475.                  Name and path of file you want to run.
  476.  
  477.  
  478.  
  479.          AdeptChangeGroup
  480.          call AdeptChangeGroup LineNumber, group_num
  481.          or
  482.          Value = AdeptChangeGroup(LineNumber, group_num)
  483.  
  484.          The AdeptChangeGroup function will return '0' if the users
  485.          group was not upgraded or not found.  It will return '1' if the     
  486.          users group was upgraded.  This works just like upgrading a users 
  487.          group in the local user editor.  The user will take on the changes 
  488.          specified for the specific group that they have joined/are in.
  489.  
  490.          LineNumber:
  491.                  Line number. Passed to REXX routine from Adept as first
  492.                  parameter.
  493.          group_num:
  494.                  Number of group you want to change the user to.
  495.  
  496.  
  497.  
  498.          AdeptCheckBit
  499.          call AdeptCheckBit Linenumber, BIT NUMBER, Numeric Long
  500.          or
  501.          Value = AdeptCheckBit(Linenumber, BIT NUMBER, Numeric Long)
  502.  
  503.          This can be used to test if a users bit is turned on for any of the
  504.          LONG bitmap'd flags.
  505.  
  506.          Returns '1' if the BIT is set, '0' if it is not.
  507.  
  508.          ** Example **
  509.  
  510.          UserFlag = AdeptGetVar(LineNumber, 42) /* 42 - User Flags */
  511.          IsOn = AdeptCheckBit(LineNumber, 10, UserFlag)
  512.          if IsOn = '1' then
  513.          call AdeptPrint LineNumber, "Flag 10 is on!\r\n"
  514.  
  515.      7
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.          AdeptCls
  524.          call AdeptCls LineNumber
  525.          or
  526.          Value = AdeptCls(LineNumber)
  527.  
  528.          Clears local and remote screen.
  529.  
  530.          LineNumber:
  531.                  Line number. Passed to REXX routine from Adept as first
  532.                  parameter.
  533.  
  534.          ** Example **
  535.  
  536.          call AdeptCls LineNumber
  537.  
  538.  
  539.  
  540.          AdeptComFlush
  541.          call AdeptComFlush LineNumber
  542.          or
  543.          Value = AdeptComFlush(LineNumber)
  544.  
  545.          AdeptComFlush will flush the output stream of the current com port.
  546.          ** BE CAREFUL **
  547.          This is a RAW com function.  This is only to be used by
  548.          professionals or people experienced with programming serial based
  549.          products.
  550.  
  551.          ** Example **
  552.  
  553.          call AdeptComFlush LineNumber
  554.  
  555.  
  556.  
  557.          AdeptComWrite
  558.          call AdeptComWrite LineNumber, string
  559.          or
  560.          Value = AdeptComWrite(LineNumber, string)
  561.  
  562.          AdeptComWrite will place a string into the com ports output stream.
  563.          This is a raw com function.  It will return -1 for carrier drop.
  564.          ** BE CAREFUL **
  565.          This is a RAW com function.  This is only to be used by   
  566.          professionals or people experienced with programming serial based
  567.          products.
  568.  
  569.          ** Example **
  570.  
  571.          rc=AdeptComWrite(LineNumber,"Hello!")
  572.          if rc='-1' then signal NoCarrier
  573.          NoCarrier:
  574.          End
  575.      8
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.          Would be used to Display "Hello" to the output stream, if the
  583.          carrier is dropped, it would signal NoCarrier and the Script
  584.          would be terminated.
  585.  
  586.  
  587.  
  588.          AdeptConvert
  589.          call AdeptConvert LineNumber, String
  590.          or
  591.          Value = AdeptConvert(LineNumber, String)
  592.  
  593.          Converts META variables passed in String.
  594.  
  595.          LineNumber:
  596.             Line number. Passed to REXX routine from Adept as first
  597.             parameter.
  598.          String:
  599.             String which contains META variables which need to be converted.
  600.          Returns:
  601.             Converted string.
  602.  
  603.          ** Example **
  604.  
  605.          dred=AdeptConvert(LineNumber,'{F5')
  606.  
  607.          The variable dred would now equal Dark Red. So where ever you use
  608.          dred it will put it in Dark Red since there are some Functions that
  609.          do not support Meta Codes (NOT just color, ALL Meta Codes)
  610.  
  611.  
  612.  
  613.          AdeptComDial
  614.          call AdeptComDial LineNumber, "STRING TO DIAL"
  615.          or
  616.          Value = AdeptComDial(LineNumber, "STRING TO DIAL")
  617.  
  618.          AdeptComDial will parse a string to the modem through the dialing
  619.          translation.  I.E. "v~^ATDT555-1212|" will be translated to
  620.          LOWER DTR, PAUSE FOR A SECOND, RAISE DTR, SEND 'ATDT555-1212' then
  621.          a CR (Carriage Return to the modem'.
  622.  
  623.  
  624.  
  625.          AdeptComDoDTR
  626.          call AdeptComDoDTR LineNumber, `0' or `1'
  627.          or
  628.          Value = AdeptComDoDTR(LineNumber, '0' or '1')
  629.  
  630.          LineNumber:
  631.             Line number. Passed to REXX routine from Adept as first
  632.             parameter.
  633.          Type:
  634.             0 - Drop DTR (Will leave it dropped)
  635.      9
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.             1 - Raise DTR (Will Leave it raised)
  643.  
  644.          ** Example **
  645.  
  646.          call AdeptComDoDTR LineNumber,'1'
  647.  
  648.          This will Drop the DTR.
  649.  
  650.  
  651.  
  652.          AdeptDropGlobalVar
  653.          RetCode = AdeptDropGlobalVar('VarName')
  654.  
  655.  
  656.  
  657.          AdeptFile
  658.          call AdeptFile LineNumber, Type, StartAt, KeyName
  659.          or
  660.          Value = AdeptFile(LineNumber, Type, StartAt, KeyName)
  661.  
  662.          File area manipulation.
  663.  
  664.          LineNumber:
  665.             Line number. Passed to REXX routine from Adept as first
  666.             parameter.
  667.          Type:
  668.             1     Returns name of current file area.
  669.             2     Returns number of current file area.
  670.             3     Find file area (number of area to find in StartAt)
  671.                   Returns file area number
  672.             4     Find file area (name of area to find in KeyName)
  673.                   Returns name of current file area.
  674.             5     Go to next file area
  675.                   Returns name of current file area.
  676.             6     Go to previous file area
  677.                   Returns name of current file area.
  678.             7     Returns download path of current file area.
  679.             8     Returns upload path of current file area.
  680.          StartAt:
  681.             Number of area to look for. (see type 3)
  682.          Keyname:
  683.             Name of area to look for. (see type 4)
  684.  
  685.          ** Example **
  686.  
  687.          call AdeptFile LineNumber,4,,'AdeptSoft'
  688.          This would find the File area "AdeptSoft" as listed in File_Areas
  689.  
  690.  
  691.  
  692.          AdeptGetGlobalVar
  693.          RetCode = AdeptGetGlobalVar('VarName')
  694.  
  695.      10
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.          AdeptGetVar and AdeptPutVar
  704.          call AdeptGetVar LineNumber, varnumber
  705.          or
  706.          call AdeptPutVar LineNumber, varnumber, Data
  707.          or
  708.          Value = AdeptGetVar(LineNumber, varnumber)
  709.          or
  710.          Value = AdeptPutVar(LineNumber, varnumber, Data)
  711.  
  712.          This function duplicates some of the functions already in the
  713.          AdeptREXX language.  This returns almost every single variable adept
  714.          uses in the BBS software.  This will give a REXX programmer total
  715.          control over all of the BBS's users and mailers memory variables.
  716.          There will also be some new variables added that will be blank.
  717.          These variables will be usable in real time across nodes by multiple
  718.          REXX programs running at the same time.  The possibilities of such a
  719.          setup are limitless.
  720.  
  721.          The following are the variable numbers:
  722.  
  723.          User Info:
  724.             1 - Users Name
  725.             2 - Users Handle
  726.             3 - Users Address
  727.             4 - Users Address1
  728.             5 - Users Address2
  729.             6 - Users City
  730.             7 - Users State
  731.             8 - Users Zipcode
  732.             9 - Users Home Phone
  733.             10 - Users Data Phone
  734.             11 - Users Fax Phone
  735.             12 - Users Business Phone
  736.             13 - Users Interests
  737.             14 - Sysop Comment about User
  738.             15 - Users Bank Time
  739.             16 - Users Computer Type (Number)
  740.             17 - Users User ID
  741.             18 - Users Point ID
  742.             19 - Users BirthYear
  743.             20 - Users BirthMonth
  744.             21 - Users BirthDay
  745.             22 - Users Gender (Represented by 1 letter)
  746.             23 - Users NetMail Credit
  747.             25 - The Group the User belongs to
  748.             27 - Time Used Today
  749.             28 - Time Per Day
  750.             29 - Time Per Call
  751.             30 - Number of calls the user has made
  752.             31 - Upload Number
  753.             32 - Download Number
  754.             33 - Uploads in K
  755.      11
  756.  
  757.  
  758.  
  759.  
  760.  
  761.             34 - Downloads in K
  762.             35 - Upload K today
  763.             36 - Download K today
  764.             37 - Upload K per day (Max Allowed)
  765.             38 - Download K per day (Max Allowed)
  766.             39 - Number of posts (Total)
  767.             40 - Security Level #1
  768.             41 - Security Level #2
  769.             42 - Flags represented as a 32-bit long
  770.             43 - Flags2 Represented as a 32-bit long
  771.             44 - User Attributes represented as a 32-bit long
  772.             45 - User Attributes #2 represented as a 32-bit long
  773.             46 - Users Screen Length
  774.             47 - Users Screen width
  775.             48 - Last Message Area number user was in
  776.             49 - Last File Area Number user was in
  777.             50 - Last Protocol Chosen (Returns the letter for the protocol)
  778.             51 - Last Archiver Chosen Returns Archive Letter
  779.             53 - Percentage of Upload/Download ratio to consider the user a
  780.                  leech
  781.             54 - Maximum Bank time allowed for this user
  782.             55 - Password Represented as a 32-bit long (32-bit CRC)
  783.             56 - Password reversed represented as a 32-bit long (32-bit CRC)
  784.             57 - Max Messages to pack into a mail packet.
  785.             58 - Users Age
  786.             59 - User Bad Password Attempts
  787.             60 - MailStatus (I forget how we use this at the moment)
  788.             61 - Number of lines shown to the remote user since last reset
  789.                  (clear screen or new screen shown, etc).  This is calculated
  790.                  by the display sub-system and should always be correct.
  791.                  This variable takes everything from ANSI and Avatar cursor
  792.                  movement into account, to number of actual lines displayed.
  793.             62 - Did the user pick non-stop display after the last more
  794.                  prompt or non-stop display choice.
  795.          BBS Info:
  796.             100 - Number of Calls to the BBS
  797.             101 - Last User ID Assigned by the BBS
  798.             102 - Last Point ID Assigned by the BBS
  799.             103 - Minimum Age Required to Log on
  800.             104 - Maximum Age Allows on the BBS
  801.             105 - Amount of NetMail Credit the user has
  802.             106 - Expire Users after x amount of days
  803.             107 - Expire Users after x amount of minutes
  804.             108 - Default User Time Per Day
  805.             109 - Default User Security Level #1
  806.             110 - Default User Security Level #2
  807.             111 - BBS User Default Flags #1 returned as a 32-bit long
  808.             112 - BBS User Default Flags #2 returned as a 32-bit long
  809.             113 - Default Upload K per day max
  810.             114 - Maximum download k per day
  811.             115 - BBS User Default Attribs returned as a 32-bit long
  812.             116 - BBS User Default Attribs #2 returned as 32-bit long
  813.             117 - The default group the user belongs to.  The user will      
  814.                   inherit the default settings for this group. 0 for none.
  815.      12
  816.  
  817.  
  818.  
  819.  
  820.  
  821.             118 - Maximum Users to allow in the user file
  822.             119 - Default Origin Line for EchoMail Areas
  823.             120 - Maximum Password Attempts Allowed
  824.             125 - Default Cost to send a NetMail message
  825.             126 - Line number the BBS is on in the quote file
  826.             127 - Default Maximum Time Per Call
  827.             128 - I don't remember I will have to check this one
  828.             129 - Odds of getting a quote when called
  829.             130 - Mailer Incoming Password Protected Mail Path
  830.             131 - Mailer OkFile for Password Protected Nodes
  831.             132 - Mailer Incoming Public Mail Path
  832.             133 - Mailer OkFile for Public Mail
  833.             134 - Mailer Unlisted Node Mail Path
  834.             135 - Mailer OkFile for Unlisted Nodes
  835.             136 - Number of times a user can page the sysop
  836.             137 - The BBS's Name
  837.             138 - BBS UAttribs 32-bit long
  838.             139 - BBS UAttribs #2 32-bit long
  839.             140 - Sysops Name
  840.             141 - Is The Sysop In (0 or 1)
  841.             142 - Default Max Messages in Packet
  842.             143 - City/State info for BBS & .QWK Packet
  843.             144 - .QWK BBS ID
  844.             145 - BBS .QWK Phone Number
  845.             146 - Default Max Bank Time
  846.          Modem/Mailer Info:
  847.             200 - Modem Handle
  848.             201 - Node Number
  849.             202 - Port Name (COM1, \PIPE\ADEPT1, etc)
  850.             203 - Modem Init String
  851.             204 - Default Dialing Prefix
  852.             205 - Default Dialing Suffix
  853.             206 - Optional Dialing Prefix #1
  854.             207 - Optional Dialing Suffix #1
  855.             208 - Optional Dialing Prefix #2
  856.             209 - Optional Dialing Suffix #2
  857.             210 - Optional Dialing Prefix #3
  858.             211 - Optional Dialing Suffix #3
  859.             212 - Optional Dialing Prefix #4
  860.             213 - Optional Dialing Suffix #4
  861.             214 - Optional Dialing Prefix #5
  862.             215 - Optional Dialing Suffix #5
  863.             216 - Optional Dialing Prefix #6
  864.             217 - Optional Dialing Suffix #6
  865.             218 - Optional Dialing Prefix #7
  866.             219 - Optional Dialing Suffix #7
  867.             220 - Optional Dialing Prefix #8
  868.             221 - Optional Dialing Suffix #8
  869.             222 - Modem Answer String
  870.             223 - Obsolete
  871.             224 - Obsolete
  872.             225 - Mail Only Event Text
  873.             226 - Text if User is too slow
  874.             228 - Baud Rate to Init Modem at
  875.      13
  876.  
  877.  
  878.  
  879.  
  880.  
  881.             229 - Minimum Baud rate Allowed on BBS
  882.             230 - Minimum Incoming Baud Rate for Mail
  883.             231 - Minimum Baud Rate to Call Out for Mail
  884.             232 - Maximum Baud Rate for Outbound Mail
  885.             233 - Current Baud Rate of Modem
  886.             234 - Minimum Cost of Mail for This Event (Dialout)
  887.             235 - Maximum Cost of Mail for This Event (Dialout)
  888.             236 - Maximum Mail in K to send in a mail session
  889.             237 - Maximum Time Limit for a mail session
  890.             239 - Maximum Bad Mail Calls before no more are made
  891.             240 - Maximum Times to call a node to send mail
  892.             241 - If Port Locked (0 / 1)
  893.             242 - Allow Human Callers or Users on the BBS? (0/1)
  894.             243 - Allow File Requests (0/1)
  895.             244 - Accept File Request (0/1)
  896.             245 - Dialing Out OK?
  897.             246 - OK To Answer the Phone?
  898.             248 - Force FTS-0001 Mail Sessions (0/1)
  899.             249 - Receive Mail From Unlisted Nodes? (0/1)
  900.             250 - Send Mail to Unlisted Nodes? (0/1)
  901.             251 - Was the last incoming call to the BBS or Mail (1 for BBS, 0
  902.                   for mailer)
  903.             252 - Sealink Overdrive Off (0/1) 1 = off
  904.             253 - Sealink Mail On/Off (1 = on)
  905.             254 - 1k Sealink On/Off (1 = off)
  906.             255 - Allow DietINFA (1 = on (TBBS & XBBS use dietINFA))
  907.             256 - In Chat with Sysop (0/1)
  908.             257 - Debug Transfers (0/1) Extra Log Info
  909.             258 - Allow Hydra Mail Transfers (0/1) (Currently Disabled)
  910.             259 - Allow ZedZip for Mail Transfers (0/1)
  911.             260 - Allow ZedZap for Mail Transfer (0/1)
  912.             261 - Turn the mailer off? (0/1) 1 = off
  913.             262 - Key to represent Yes (Y) for USA
  914.             263 - Key to represent No (N) for USA
  915.             264 - Key to represent Stop (S) for USA
  916.             264 - Key to represent Pause (P) for USA
  917.             264 - Key to represent Quit (Q) for USA
  918.             268 - Maximum # of resyncs to abort transfers
  919.             269 - Maximum # of transfer errors to abort on
  920.             270 - Last Users on this lines name
  921.             271 - Last Mailer to call this node
  922.             272 - Last Long Entry Written
  923.             276 - Check Carrier Detect (0/1) 1 = on
  924.             277 - Video Display Handle
  925.             278 - Number of ring to wait for answer on this node
  926.  
  927.          ** Examples **
  928.  
  929.          bbsname=AdeptGetVar(LineNumber,137)
  930.          AdeptPrint(line,"\r\nWelcome to"bbsname"! You are welcomed by the
  931.          Sysop")
  932.  
  933.          This would come out like "Welcome to DeathStar/2! You are welcomed
  934.          by The Sysop". (Except DeathStar/2 would be your BBS name :)
  935.      14
  936.  
  937.  
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.          AdeptHitReturn
  945.          call AdeptHitReturn LineNumber
  946.          or
  947.          Value = AdeptHitReturn(LineNumber)
  948.  
  949.          AdeptHitReturn will wait for the user to press enter.  This will
  950.          use the Press Enter to continue in the English.Text or other
  951.          language file.
  952.  
  953.          ** Example **
  954.  
  955.          call AdeptHitReturn LineNumber
  956.  
  957.          This would prompt the user to press Enter (return) to continue.
  958.  
  959.          
  960.          AdeptInKey
  961.          call AdeptInKey LineNumber
  962.          or
  963.          Value = AdeptInKey(LineNumber)
  964.          
  965.          AdeptInKey will return the ASCII code for a incoming key sequence.
  966.          AdeptInKey will not wait for a key, it will return 0 if there are no
  967.          keys waiting.  If you use this in a loop, please offset the amount
  968.          of CPU time a loop uses with a AdeptSleep command.
  969.  
  970.          ** Example **
  971.       
  972.          ReturnCode = AdeptInKey(LineNumber)
  973.  
  974.  
  975.  
  976.          AdeptInput
  977.          call AdeptInput LineNumber, MinLen, MaxLen, Type, Flags, Prompt,  
  978.          Help,HelpFile, Default
  979.          or
  980.          Value = AdeptInput(LineNumber, MinLen, MaxLen, Type, Flags, Prompt,
  981.          Help, HelpFile, Default)
  982.  
  983.          Get a string from the user.
  984.  
  985.          LineNumber:
  986.             Line number. Passed to REXX routine from Adept as first
  987.             parameter.
  988.          MinLen:
  989.            Minimum length of input string.
  990.          MaxLen:
  991.            Maximum length of input string.
  992.          Type:
  993.            Type of input (will define later)
  994.          Flags:
  995.      15
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.            <undefined>
  1002.          Prompt:
  1003.            Prompt to display when asking for input.
  1004.          Help:
  1005.            Name of subject to look for in HelpFile when user asks for help.
  1006.          HelpFile:
  1007.            Contains help on subjects pertaining to this input prompt.
  1008.          Default:
  1009.            Default keystroke.
  1010.  
  1011.          ** Example **
  1012.  
  1013.          answer=AdeptInput(LineNumber,1,50,,,'What Is your Name : ',,,       
  1014.          call AdeptPrint LineNumber,'\r\n Your name is' answer
  1015.  
  1016.          This would ask the User for his or her name with a MinLen of 1
  1017.          Character and a MaxLen of 50 Characters, with a prompt of "What
  1018.          is your Name". When this is printed, it will print to the local
  1019.          and remote screen "Your Name is Jean-Ray" (Jean-Ray being the
  1020.          name entered).
  1021.  
  1022.  
  1023.  
  1024.          AdeptLibrary
  1025.          call AdeptLibraryLineNumber, Type, StartAt, KeyName
  1026.          or
  1027.          Value = AdeptLibrary(LineNumber, Type, StartAt, KeyName)
  1028.  
  1029.          Library area manipulation.
  1030.          LineNumber:
  1031.             Line number. Passed to REXX routine from Adept as first
  1032.             parameter.
  1033.          Type:
  1034.            1     Returns name of current library area.
  1035.            2     Returns number of current library area.
  1036.            3     Find library area (number of area to find in StartAt)
  1037.                  Returns library area number
  1038.            4     Find library area (name of area to find in KeyName)
  1039.                  Returns name of current library area.
  1040.            5     Go to next library area
  1041.                  Returns name of current library area.
  1042.            6     Go to previous library area
  1043.                  Returns name of current library area.
  1044.            7     Returns path of current library area.
  1045.          StartAt:
  1046.            Number of area to look for. (see type 3)
  1047.          Keyname:
  1048.            Name of area to look for. (see type 4)
  1049.  
  1050.          ** NOTE: The Adept Library Functions are not yet finished.
  1051.  
  1052.  
  1053.  
  1054.          AdeptLocation
  1055.      16
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.          call AdeptLocation LineNumber, "User Location on the BBS"
  1062.          or
  1063.          Value = AdeptLocation(LineNumber, "User Location on the BBS")
  1064.  
  1065.          Will display where the User is on the BBS (Sysop defined)
  1066.  
  1067.          ** Example **
  1068.  
  1069.          call AdeptLocation LineNumber,"In Door - Barren Realms Elite"
  1070.  
  1071.          This would display the user on that particular line in a Door of
  1072.          Barren Realms Elite.
  1073.  
  1074.          ** NOTE: Remember, Once the script ends, the location will go back  
  1075.          to what it was before the function was executed. This function 
  1076.          however is great for Doors and Chat Mode with the Sysop if you Use a
  1077.          Main.Cmd or a .Cmd file for your Door Menu. It can let other users 
  1078.          know what Door the other node(s) are in if any.
  1079.  
  1080.  
  1081.  
  1082.          AdeptLog
  1083.          call AdeptLog LineNumber, Flags, String1, ..., StringN
  1084.          or
  1085.          Value = AdeptLog(LineNumber, Flags, String1, ..., StringN)
  1086.  
  1087.          Log an action.
  1088.          LineNumber:
  1089.             Line number. Passed to REXX routine from Adept as first
  1090.             parameter.
  1091.          Flags:
  1092.             1    Output to log and listbox
  1093.             2    Output to log only
  1094.             3    Output to listbox only
  1095.          String1..N:
  1096.                                                                              
  1097.             Strings are added together to form one string which is used to
  1098.             spawn the session.
  1099.  
  1100.          ** Examples **
  1101.  
  1102.          call AdeptLog LineNumber,2,'Mylog'
  1103.  
  1104.  
  1105.  
  1106.          AdeptMenu
  1107.          call AdeptMenu LineNumber, Flags, MenuName
  1108.          or
  1109.          Value = AdeptMenu(LineNumber, Flags, MenuName)
  1110.  
  1111.          Executes a menu contain in the file MenuName.
  1112.  
  1113.          LineNumber:
  1114.             Line number. Passed to REXX routine from Adept as first
  1115.      17
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.             parameter.
  1122.          Flags:
  1123.             1    Return after user chooses a command from the menu.
  1124.             2    Return after executing all commands contained in menu.
  1125.          MenuName:
  1126.             File name of the menu to use.
  1127.  
  1128.          ** Example **
  1129.  
  1130.          call AdeptMenu LineNumber,2,'Test.Menu'
  1131.  
  1132.  
  1133.  
  1134.          AdeptMenuType
  1135.          call AdeptMenuType LineNumber, menutype, menudata
  1136.          or
  1137.          Value = AdeptMenuType(LineNumber, menutype, menudata)
  1138.  
  1139.          This command allows you to execute a menu options 10 - 998.  Just
  1140.          pass the standard menudata.
  1141.  
  1142.          ** Example **
  1143.  
  1144.          call AdeptMenuType LineNumber,42,,,0
  1145.  
  1146.          This would display The Users online at the current time.
  1147.          AdeptMessage
  1148.          call AdeptMessage LineNumber, Type, StartAt, KeyName
  1149.          or
  1150.          Value = AdeptMessage(LineNumber, Type, StartAt, KeyName)
  1151.  
  1152.          Message area manipulation.
  1153.  
  1154.          LineNumber:
  1155.             Line number. Passed to REXX routine from Adept as first
  1156.             parameter.
  1157.          Type:
  1158.            1     Returns name of current message area.
  1159.            2     Returns number of current message area.
  1160.            3     Find message area (number of area to find in StartAt)
  1161.                  Returns message area number
  1162.            4     Find message area (name of area to find in KeyName)
  1163.                  Returns name of current message area.
  1164.            5     Go to next message area
  1165.                  Returns name of current message area.
  1166.            6     Go to previous message area
  1167.                  Returns name of current message area.
  1168.            7     Returns number of messages in current message area.
  1169.          StartAt:
  1170.            Number of area to look for. (see type 3)
  1171.          Keyname:
  1172.            Name of area to look for. (see type 4)
  1173.  
  1174.          ** Example **
  1175.      18
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.          call AdeptMessage LineNumber,3,'1',
  1183.  
  1184.          Would find message area Number 1 as listed in the
  1185.          Adept\System\Message_Areas file.
  1186.  
  1187.  
  1188.  
  1189.          AdeptMore
  1190.          call AdeptMore LineNumber
  1191.          or
  1192.          Value = AdeptMore(LineNumber)
  1193.  
  1194.          AdeptMore will execute a standard more prompt.  This will use the
  1195.          More prompt in the English.Text or other language file.  This will
  1196.          also use the International Y/N/Q/A info.
  1197.  
  1198.  
  1199.  
  1200.          AdeptPause
  1201.          call AdeptPause LineNumber
  1202.          or
  1203.          Value = AdeptPause(LineNumber)
  1204.  
  1205.          AdeptPause will wait for any key.  This does not display any text.
  1206.  
  1207.          ** Example **
  1208.  
  1209.          call AdeptPause LineNumber
  1210.  
  1211.          Will wait for any key to be pressed on current node.
  1212.  
  1213.  
  1214.  
  1215.          AdeptPeekByte
  1216.          call AdeptPeekByteLineNumber, length
  1217.          or
  1218.          Value = AdeptPeekByte(LineNumber, length)
  1219.  
  1220.          Will place the next char in the incoming stream that is waiting.
  1221.          It will NOT remove it from the incoming data steam.
  1222.          Length is the amount of time to wait for the next char to enter the 
  1223.          data stream.  (This is a RAW comm function).
  1224.  
  1225.          The software will return TIMEOUT or LOSTCARRIER.
  1226.  
  1227.          ** Example **
  1228.  
  1229.          call AdeptPeekByte LineNumber,6000
  1230.  
  1231.          Will Wait 6 seconds for the next char to enter the data stream.
  1232.  
  1233.  
  1234.          
  1235.      19
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.          AdeptPrint
  1242.          call AdeptPrint LineNumber, String1, ..., StringN
  1243.          or
  1244.          Value = AdeptPrint(LineNumber, String1, ..., StringN)
  1245.  
  1246.          Prints a string to the local and remote screen. The string may
  1247.          contain Adept META variables.  You may pass more than one or more
  1248.          strings to this function.
  1249.          String1..N:
  1250.             Strings are printed in the order that they were passed.
  1251.  
  1252.          ** Example **
  1253.  
  1254.          call AdeptPrint LineNumber,"Hello! Welcome to The BBS"
  1255.  
  1256.          This Would print "Hello! Welcome to The BBS" to the User online.
  1257.  
  1258.  
  1259.  
  1260.          AdeptPrintL
  1261.          call AdeptPrintL LineNumber, "Text to print locally ONLY"
  1262.          or
  1263.          Value = AdeptPrintL(LineNumber, "Text to print locally ONLY")
  1264.  
  1265.          AdeptPrintL works exactly like AdeptPrint except it prints to the
  1266.          LOCAL screen only.
  1267.  
  1268.  
  1269.  
  1270.          AdeptPutC
  1271.          call AdeptPutC LineNumber, char
  1272.          or
  1273.          Value = AdeptPutC(LineNumber, char)
  1274.  
  1275.          AdeptPutC will put a char into the Com port output stream.  This is
  1276.          a raw com function.  It will return -1 for carrier drop.
  1277.          ** BE CAREFUL**
  1278.  
  1279.          This is a RAW com function.  This is only to be used by
  1280.          professionals or people experienced with programming serial based
  1281.          products.
  1282.  
  1283.          ** Example **
  1284.  
  1285.          call AdeptPutC LineNumber,'A'
  1286.  
  1287.          This would put the letter 'A' in the Com Port's output stream.
  1288.  
  1289.  
  1290.  
  1291.          AdeptPutKey
  1292.          call AdeptPutKey LineNumber, char
  1293.          or
  1294.          Value = AdeptPutKey(LineNumber, char)
  1295.      20
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.          AdeptPutKey will place a character into keyboard input stream.  Char
  1303.          can be a character i.e. 'A' or a ASCII character code.
  1304.  
  1305.          ** Example **
  1306.  
  1307.          call AdeptPutKey LineNumber,'A'
  1308.  
  1309.          Will put the Character 'A' in the Keyboard's input stream.
  1310.  
  1311.  
  1312.  
  1313.          AdeptRead
  1314.          call AdeptRead LineNumber, Type, Flags, StartAt
  1315.          or
  1316.          Value = AdeptRead(LineNumber, Type, Flags, StartAt)
  1317.  
  1318.          Read messages.
  1319.  
  1320.          LineNumber:
  1321.             Line number. Passed to REXX routine from Adept as first
  1322.             parameter.
  1323.          Type:
  1324.             1    Read messages in current area.
  1325.             2    Globally read messages.
  1326.          Flags:                                                              
  1327.             <undefined so far>
  1328.          StartAt:
  1329.             Number of message at which Adept should start reading.
  1330.  
  1331.          ** Examples **
  1332.  
  1333.          call AdeptRead LineNumber,2,,4
  1334.  
  1335.          This would start the user currently online reading the messages
  1336.          globally starting from Message Area #4 (as defined in
  1337.          Adept\System\Message_Areas file).
  1338.  
  1339.  
  1340.  
  1341.          AdeptRecv
  1342.          call AdeptRecv LineNumber, Flags, Path, Area, File1, ..., FileN
  1343.          or
  1344.          Value = AdeptRecv(LineNumber, Flags, Path, Area, File1, ..., FileN)
  1345.  
  1346.          Upload files
  1347.  
  1348.          LineNumber:
  1349.             Line number. Passed to REXX routine from Adept as first
  1350.             parameter.
  1351.          Flags:
  1352.             1    No time verification
  1353.             4    Silence
  1354.             8    Never be silent
  1355.      21
  1356.  
  1357.  
  1358.  
  1359.  
  1360.  
  1361.             16   Don't ask for description
  1362.             64   Don't credit upload (does not return files size)
  1363.             128  Accept as private file.
  1364.          Path:
  1365.             Path to put files in.
  1366.          Area:
  1367.             Name of area to put files in.
  1368.          File1..N:
  1369.             Names of files to be received.
  1370.          Returns:
  1371.             String containing number of bytes downloaded, a space and the
  1372.             number of files downloaded.
  1373.         
  1374.          NOTE: This function will change in the future.
  1375.                                                                             
  1376.          ** Example **
  1377.  
  1378.          call AdeptRecv line,128,'D:\ADEPT','AdeptSoft','Adept97b.Zip'
  1379.  
  1380.          This will send the File Adept97b.Zip from the AdeptSoft area and
  1381.          the directory of D:\ADEPT
  1382.  
  1383.  
  1384.  
  1385.          AdeptRexxKillThread
  1386.  
  1387.          AdeptRexxStartThread
  1388.          RetCode = AdeptRexxStartThread(FileName, [var1 var2 var3 var4])
  1389.  
  1390.          PARAMETERS
  1391.  
  1392.              FileName - Name of AdeptREXX program to execute as a background
  1393.                         thread.
  1394.  
  1395.              Var1 - Variable to pass to the rexx program, you can pass as
  1396.                     many variables you want.  They are not shared once they
  1397.                     are passed. See - AdeptSetGlobalVar and
  1398.                     AdeptGetGlobalVar
  1399.  
  1400.          RETURNS
  1401.  
  1402.              REXX Error Codes
  1403.  
  1404.          EXAMPLE
  1405.  
  1406.              rc = AdeptRexxStart('Thread.Cmd', line)
  1407.  
  1408.          DESCRIPTION
  1409.  
  1410.              This will cause the program Thread.Cmd to be run in the
  1411.              background with the rexx programming calling it as the parent.
  1412.              When the parent ends, all children and grandchildren are killed
  1413.              with it.
  1414.  
  1415.      22
  1416.  
  1417.  
  1418.  
  1419.  
  1420.  
  1421.  
  1422.          RELATED FUNCTIONS
  1423.              AdeptKillRexxThread, AdeptSetGlobalVar, AdeptGetGlobalVar,
  1424.              AdeptDropGlobalVar
  1425.         
  1426.          
  1427.          AdeptSend
  1428.          call AdeptSend LineNumber, Flags, Path, File1, ..., FileN
  1429.          call AdeptSent LineNumber,,,''@file''
  1430.          or
  1431.          Value = AdeptSend(LineNumber, Flags, Path, File1, ..., FileN)
  1432.          Value = AdeptSent(LineNumber,,,''@file'')
  1433.          
  1434.          Download Files.
  1435.         
  1436.          LineNumber:
  1437.             Line number. Passed to REXX routine from Adept as first
  1438.             parameter.
  1439.          Flags:
  1440.             1    No time verification
  1441.             2    No leech checking
  1442.             4    Silence
  1443.             8    Never be silent
  1444.             16   Don't check all download paths
  1445.             64   Don't return files length (free file/bytes)
  1446.          Path:
  1447.             Path to files.  If blank, use current file area path.
  1448.          File1..N:
  1449.             Names of files to be sent.
  1450.             NOTE: Currently the files are sent one at a time.
  1451.          @File:
  1452.             Text file with the filenames and paths (one per line) of
  1453.             the files to send.
  1454.          Returns:
  1455.             String containing number of bytes downloaded, a space and the
  1456.             number of files downloaded.
  1457.  
  1458.  
  1459.          ** Example **
  1460.  
  1461.          call AdeptSend LineNumber,,,'@c:\list')
  1462.  
  1463.          Will send the File that is in the file called list.
  1464.  
  1465.  
  1466.  
  1467.          AdeptSetBit
  1468.          call AdeptSetBit LineNumber, BIT NUMBER, Numeric Long
  1469.          or
  1470.          Value = AdeptSetBit(LineNumber, BIT NUMBER, Numeric Long)
  1471.  
  1472.          Will set BIT Number 1 - 32 to ON.
  1473.          The changes are not saved until you put the changes back into
  1474.          active memory with the AdeptPutVar option.
  1475.      23
  1476.  
  1477.  
  1478.  
  1479.  
  1480.  
  1481.  
  1482.          ** Example **
  1483.  
  1484.          SetBit= AdeptGetVar(LineNumber,42)
  1485.          call AdeptSetBit LineNumber,30,SetBit
  1486.  
  1487.  
  1488.  
  1489.          AdeptSetGlobalVar
  1490.          RetCode = AdeptSetGlobalVar('VarName', Value)
  1491.  
  1492.  
  1493.  
  1494.          AdeptSetTimer
  1495.          call AdeptSetTimer LineNumber, Timer
  1496.          or
  1497.          Value = AdeptSetTimer(LineNumber, Timer)
  1498.  
  1499.          LineNumber:
  1500.             Passed to REXX routine from Adept as First Parameter.
  1501.          Timer: 
  1502.             Time In Milliseconds
  1503.  
  1504.          ** Example **
  1505.  
  1506.          call AdeptSetTimer LineNumber,10000  /* 10 seconds */
  1507.  
  1508.  
  1509.  
  1510.          AdeptShow
  1511.          call AdeptShow LineNumber, Type, Flags, StartAt, KeyName
  1512.          or
  1513.          Value = AdeptShow(LineNumber, Type, Flags, StartAt, KeyName)
  1514.  
  1515.          Display text files.
  1516.  
  1517.          LineNumber:
  1518.             Line number. Passed to REXX routine from Adept as first
  1519.             parameter.
  1520.          Type:
  1521.            1     Show a text file (StartAt=filename, KeyName=keys to abort
  1522.                  on)
  1523.            2     Page-read text file (Keyname=filename)
  1524.            3     Show new text files (Keyname=directory to look in)
  1525.            4     Show any text file (Keyname=directory to look in)
  1526.          Flags:
  1527.            <undefined> (for now)
  1528.          StartAt:
  1529.            (see type 1)
  1530.          KeyName:
  1531.            Keys on which to abort showing of the text file. (see type 1)
  1532.            -or-
  1533.            Name of file or directory to look for. (see types 2-4)
  1534.  
  1535.      24
  1536.  
  1537.  
  1538.  
  1539.  
  1540.  
  1541.          ** Examples **
  1542.  
  1543.          call AdeptShow LineNumber,1,,'C:\Adept\Text\Bullet.Ans,Q
  1544.  
  1545.          This would display the Bullet.Ans file in the Adept\Text directory
  1546.          and if the User presses the letter 'Q' it will abort viewing of the
  1547.          file.
  1548.  
  1549.  
  1550.  
  1551.          AdeptSleep
  1552.          call AdeptSleep LineNumber, time_to_sleep_in_milliseconds
  1553.          or
  1554.          Value = AdeptSleep(LineNumber, time_to_sleep_in_milliseconds)
  1555.  
  1556.          AdeptSleep will cause the current node to sleep for x amount of
  1557.          milli-seconds.  This is very helpful in making your REXX scripts CPU
  1558.          friendly. When you use this command it will release the current time
  1559.          slice to the next node or program waiting in line.  A decent sleep
  1560.          amount is AdeptSleep(65), 65 milliseconds, 1000 milliseconds = 1
  1561.          second.
  1562.          The smallest timeslice OS/2 can sleep is 32ms.
  1563.  
  1564.          ** Examples **
  1565.  
  1566.          call AdeptSleep LineNumber,1000    /* 1 Second   */
  1567.          call AdeptSleep LineNumber,10000   /* 10 Seconds */
  1568.          call AdeptSleep LineNumber,60000   /* 1 Minute   */
  1569.          call AdeptSleep LineNumber,600000  /* 10 Minutes */
  1570.  
  1571.  
  1572.  
  1573.  
  1574.          AdeptTimedInKey
  1575.          call AdeptTimedInKey LineNumber,timeout
  1576.          or
  1577.          Value = AdeptTimedInKey(LineNumber,timeout)
  1578.  
  1579.          Returns the value for the key imputed, watched the port for a
  1580.          period of time in milliseconds.
  1581.  
  1582.          ** Example **
  1583.  
  1584.          KeyIn=AdeptTimedInKey(LineNumber,5000)    /* 5 seconds */
  1585.  
  1586.          ** NOTE: KeyIn contains the key pressed or -1 or 0 for timeout or -2
  1587.                   for carrier loss.
  1588.  
  1589.  
  1590.  
  1591.          AdeptTimeLeft
  1592.          call AdeptTimeLeft LineNumber[, SecsLeftInSession]
  1593.          or
  1594.          Value = AdeptTimeLeft(LineNumber[, SecsLeftInSession])
  1595.      25
  1596.  
  1597.  
  1598.  
  1599.  
  1600.  
  1601.  
  1602.          Optionally sets time left in current session. Always returns time
  1603.          left in current session.
  1604.  
  1605.          LineNumber:
  1606.             Line number. Passed to REXX routine from Adept as first
  1607.             parameter.
  1608.          SecsLeftInSession:
  1609.             Optional.  Set seconds left in current session.
  1610.          Returns:
  1611.             Time left in session in seconds.
  1612.          
  1613.          ** Example **
  1614.          call AdeptTimeLeft LineNumber, 60000
  1615.          
  1616.          This will give the user online 1 minute left in his/her session.
  1617.        
  1618.  
  1619.  
  1620.          AdeptTimerUp
  1621.          call AdeptTimerUp LineNumber, Timer
  1622.          or
  1623.          Value = AdeptTimerUp(LineNumber, Timer)
  1624.  
  1625.          AdeptTimerUp will return 0 if timer is Up or 1 if it is Not
  1626.  
  1627.          ** Example with the TWO PREVIOUS rexx Functions **
  1628.          Timer=AdeptSetTimer(LineNumber,10000)  /* 10 Seconds */
  1629.          MyRet=AdeptTimerUp(LineNumber,timer)
  1630.          MyRet = 0 if timer is up or 1 if it is not.
  1631.  
  1632.  
  1633.  
  1634.          AdeptUnsetBit
  1635.          call AdeptUnsetBit LineNumber, BIT NUMBER, Numeric Long
  1636.          or
  1637.          Value = AdeptUnsetBit(LineNumber, BIT NUMBER, Numeric Long)
  1638.  
  1639.          Will set BIT Number 1 - 32 to OFF.
  1640.          The changes are not saved until you put the changes back into active
  1641.          memory with the AdeptPutVar option.
  1642.  
  1643.          ** Example **
  1644.  
  1645.          call AdeptUnsetBit LineNumber, 30, SetBit
  1646.  
  1647.          Will turn bit number 30 OFF.
  1648.  
  1649.          ***NOTE : The changes are not saved until you put the changes back
  1650.                    into active memory with the AdeptPutVar option.
  1651.  
  1652.  
  1653.  
  1654.          AdeptComWaitConnect
  1655.      26
  1656.  
  1657.  
  1658.  
  1659.  
  1660.  
  1661.          call AdeptComWaitConnect LineNumber, Time
  1662.          or
  1663.          Value = AdeptComWaitConnect(LineNumber, Time)
  1664.  
  1665.          AdeptComWaitConnect will wait for a modem connect or error code.  It
  1666.          will return 0 if it time outs if it doesn't timeout it will
  1667.          then return the return code from the modem i.e. 'CONNECT 28800'
  1668.          'ERROR', 'OK', 'NO CARRIER'.
  1669.  
  1670.          The time is in the format of milliseconds.
  1671.  
  1672.  
  1673.  
  1674.          AdeptWaitKey
  1675.          call AdeptWaitKey LineNumber
  1676.          or
  1677.          Value = AdeptWaitKey(LineNumber)
  1678.  
  1679.          AdeptWaitKey will return the ASCII code for a incoming key sequence.
  1680.          Unlike AdeptInKey, AdeptWaitKey will actually wait for a key
  1681.          sequence. If the user times out, it will log the user off.
  1682.  
  1683.          ** Example **
  1684.  
  1685.          ReturnCode = AdeptInKey(LineNumber)
  1686.          
  1687.  
  1688.  
  1689.          AdeptWrite
  1690.          call AdeptWrite LineNumber, Type, Flags, Filename
  1691.          or
  1692.          Value = AdeptWrite(LineNumber, Type, Flags, Filename)
  1693.  
  1694.          Write a message.
  1695.  
  1696.          LineNumber:
  1697.             Line number. Passed to REXX routine from Adept as first
  1698.             parameter.
  1699.          Type:
  1700.             1    Write a message  (Filename is unused)
  1701.             2    edit file using editor (Flags are unused)
  1702.          Flags:
  1703.             1    Force message to force-to-name of current message area.
  1704.             2    Force private
  1705.             4    Force public
  1706.             8    Use MSGTMP.LineNumber file
  1707.          Filename:
  1708.             Name of text file to edit.
  1709.  
  1710.          ** Example **
  1711.  
  1712.          call AdeptWrite LineNumber, 1, 4,
  1713.  
  1714.          This would write a public message in the current area.
  1715.      27
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.  
  1723.  
  1724.          AfSysAddIndexEntries
  1725.          RetCode = AfSysAddIndexEntries(fSysHandle)
  1726.  
  1727.          AfSysAddIndexEntries adds entries in the indexes for a file.
  1728.  
  1729.               PARAMETERS
  1730.               fSysHandle- input
  1731.                   Handle to the currently open file system.
  1732.  
  1733.               RETURNS
  1734.               Return Code.
  1735.  
  1736.  
  1737.          
  1738.               AfSysAddIndexEntries may return the following values:
  1739.  
  1740.               0           No errors.
  1741.               92          FSYS_ERROR_SEM_TIMEOUT
  1742.               200         FSYS_ERROR_ADDING_DATED
  1743.               201         FSYS_ERROR_ADDING_ANAME
  1744.               202         FSYS_ERROR_ADDING_NAME
  1745.  
  1746.               REMARKS
  1747.               Index data should be set using the AfSysSetIndexXXXX series of
  1748.               functions before adding a file to the indexes.
  1749.  
  1750.               EXAMPLE CODE
  1751.               This example deletes the old index entries for a file, set the 
  1752.               new index data, then adds in the new index entries.
  1753.  
  1754.               FSysDeleteIndexEntries(hFSys)
  1755.               /* set new index data */
  1756.               AfSysGetFileName(fSysHandle, 'Buffer')
  1757.               AfSysSetIndexFilename(fSysHandle, Buffer)
  1758.               AfSysGetFileDate(fSysHandle, 'Date')
  1759.               AfSysSetIndexEntryDate(fSysHandle, Date.1, Date.2, Date.3)
  1760.               AreaNum = FSysGetFileArea(fSysHandle)
  1761.               AfSysSetIndexAreaNumber(fSysHandle, AreaNum)
  1762.               /* add in new index entries */
  1763.               FSysAddIndexEntries(fSysHandle);
  1764.               
  1765.  
  1766.  
  1767.          AfSysClose
  1768.          RetCode = AfSysClose(fSysHandle)
  1769.  
  1770.          AfSysClose close the file system.
  1771.  
  1772.               PARAMETERS
  1773.               fSysHandle - input
  1774.                     Handle to the currently open file system.
  1775.      28
  1776.  
  1777.  
  1778.  
  1779.  
  1780.  
  1781.  
  1782.               RETURNS
  1783.               Return Code.
  1784.  
  1785.               AfSysClose may return the following values:
  1786.  
  1787.                 0           No errors.
  1788.  
  1789.               EXAMPLE CODE
  1790.               This example calls AfSysOpen and creates new file system 
  1791.               files, then closes the file system.
  1792.  
  1793.               RetCode = AfSysOpen('.\Files', 'fSysHandle', 'FALSE')
  1794.                  .
  1795.                  .
  1796.               // use the file system.
  1797.                  .
  1798.                  .
  1799.               RetCode = fSysClose(fSysHandle)
  1800.  
  1801.  
  1802.  
  1803.          AfSysDeleteIndexEntries
  1804.          RetCode = AfSysDeleteIndexEntries(fSysHandle)
  1805.  
  1806.          AfSysDeleteIndexEntries deletes a file from all of the indexes.
  1807.  
  1808.               PARAMETERS
  1809.               fSysHandle - input Handle to the currently open file system.
  1810.  
  1811.               RETURNS
  1812.               Return Code.
  1813.  
  1814.               AfSysDeleteIndexEntries may return the following values:
  1815.  
  1816.               0           No errors.
  1817.               92          FSYS_ERROR_SEM_TIMEOUT
  1818.               190         FSYS_ERROR_DELETING_DATED
  1819.               191         FSYS_ERROR_DELETING_ANAME
  1820.               192         FSYS_ERROR_DELETING_NAME
  1821.  
  1822.               REMARKS
  1823.               AfSysDeleteIndexEntries deletes all refrences to a certain file
  1824.               in the indexes. It does NOT remove that files record from the 
  1825.               data file.
  1826.  
  1827.               To set which file you wish to delete, you must either search 
  1828.               for, and find the file using the searching functions or you 
  1829.               must use the AfSysSetIndexXXXXX series of functions to set the 
  1830.               correct filename, date, area name and file record offset.  
  1831.               Obviously it is best to search for the file, find it and 
  1832.               confirm it is the file you wish to delete before you delete it.
  1833.  
  1834.               EXAMPLE CODE
  1835.      29
  1836.  
  1837.  
  1838.  
  1839.  
  1840.  
  1841.               Assuming you have already set the file index information this
  1842.               example calls AfSysDeleteIndexEntries to delete the file from 
  1843.               the indexes.
  1844.  
  1845.               RetCode = AfSysDeleteIndexEntries(fSysHandle)
  1846.  
  1847.  
  1848.  
  1849.          AfSysOpen
  1850.          RetCode = AfSysOpen(Directory, fSysHandle, Create)
  1851.  
  1852.          FSysOpen should be called by each program in the process which wants
  1853.          to use the file system.
  1854.  
  1855.               PARAMETERS
  1856.  
  1857.               Directory -
  1858.                   This is the directory that the files system is located in.
  1859.                   Normally a program which uses the Adept file system is 
  1860.                   started in the '\Adept' directory and the files system 
  1861.                   would then be in '.\Files' or more simply, 'Files'.   The 
  1862.                   directory name should NOT end with a backslash or forward 
  1863.                   slash.
  1864.  
  1865.               FSysHandle - output
  1866.                   This contains the handle to the file system.
  1867.  
  1868.               Create - input
  1869.                   Tells the file system whether to open the current file 
  1870.                   system files or to create new ones.
  1871.  
  1872.                   FALSE - Open current files.
  1873.  
  1874.                   TRUE  - Create/Open new files.
  1875.  
  1876.               RETURNS
  1877.               Return Code.
  1878.  
  1879.               AFSysOpen may return the following values:
  1880.  
  1881.                 0           No errors.
  1882.                 90          FSYS_ERROR_ALLOC_MEM
  1883.                 91          FSYS_ERROR_INIT_BIDX
  1884.                 100         FSYS_ERROR_OPEN_DATA
  1885.                 101         FSYS_ERROR_OPEN_DESC
  1886.                 102         FSYS_ERROR_OPEN_PATH
  1887.                 103         FSYS_ERROR_OPEN_NIDX
  1888.                 104         FSYS_ERROR_OPEN_DIDX
  1889.                 105         FSYS_ERROR_OPEN_AIDX
  1890.                 180         FSYS_ERROR_CREATING_KEY
  1891.  
  1892.               REMARKS
  1893.               A successful AfSysOpen request returns a handle to the file
  1894.               system. All other calls to the file system functions require 
  1895.      30
  1896.  
  1897.  
  1898.  
  1899.  
  1900.  
  1901.               this handle.
  1902.  
  1903.               Note: When you choose to create a new file system, the indexes 
  1904.               are destroyed if they exist. All other files are opened and NOT
  1905.               destroyed.
  1906.               If you wish to create all files from scratch, make sure there 
  1907.               are no files in the directory.
  1908.  
  1909.               You could call AfSysOpen twice with a different directory to 
  1910.               open two different files system to copy entries from one file 
  1911.               system to another.
  1912.  
  1913.               EXAMPLE CODE
  1914.               This example calls AfSysOpen and uses the current file system
  1915.               files.
  1916.  
  1917.               RetCode = FSysOpen('.\Files', 'FSysHandle', 'FALSE')
  1918.  
  1919.          
  1920.  
  1921.          AfSysSetIndexAreaNumber
  1922.          AfSysSetIndexEntryDate
  1923.          AfSysSetIndexFileName
  1924.          AfSysSetIndexRecordOffset
  1925.          AfSysSetFileName
  1926.          AfSysGetFileName
  1927.          AfSysSetUploader
  1928.          AfSysGetUploader
  1929.          AfSysSetFileSize
  1930.          AfSysGetFileSize
  1931.          AfSysSetFileArea
  1932.          AfSysGetFileArea
  1933.          AfSysSetFileDate
  1934.          AfSysGetFileDate
  1935.          AfSysGetFileDescription
  1936.          AfSysSetFileDescription
  1937.          AfSysSetListable
  1938.          AfSysGetListable
  1939.          AfSysGetFreeFile
  1940.          AfSysGetFreeTime
  1941.          AfSysGetFreeBytes
  1942.          AfSysgetSecLevel
  1943.          AfSysGetCopyFile
  1944.          AfSysGetAge
  1945.          AfSysGetDlAble
  1946.          AfSysGetPathName
  1947.          AfSysGetTimesDl
  1948.          AfSysSetPathIndex
  1949.          AfSysSetAge
  1950.          AfSysSetDlAble
  1951.          AfSysSetSecLevel
  1952.          AfSysSetReadDescFlag
  1953.          AfSysSetCopyFile
  1954.          AfSysSetFileRecord
  1955.      31
  1956.  
  1957.  
  1958.  
  1959.  
  1960.  
  1961.          AfSysSetDescOffset
  1962.          AfSysReadFilePath
  1963.          AfSysWriteFilePath
  1964.          AfSysFindFirstName
  1965.          AfSysFindNextName
  1966.          AfSysFindExact
  1967.          AfSysListFirst
  1968.          AfSysListNext
  1969.          AfSysZeroFileRecord
  1970.          AfSysFirstName
  1971.          AfSysAddIndexEntries
  1972.          AfSysResetFilePtr
  1973.          AfSysResetDescFilePtr
  1974.          AfSysReadDescriptionLine
  1975.          AfSysRawReadFileRecord
  1976.  
  1977.          AdeptComPutC
  1978.          AdeptComWrite
  1979.          AdeptComPeekByte
  1980.          AdeptComGetByte
  1981.          AdeptComDoDTR
  1982.          AdeptComFlush
  1983.          AdeptComGetString
  1984.          AdeptComGetBlock
  1985.          AdeptComWaitConnect
  1986.          AdeptComDial
  1987.          AdeptRawOpenSocket
  1988.          AdeptRawComOpen
  1989.          AdeptRawComClose
  1990.          AdeptRawComGetBlock
  1991.          AdeptRawComGetString
  1992.          AdeptRawComWrite
  1993.          AdeptRawSetBPS
  1994.          AdeptRawComLink
  1995.          ReturnComPort
  1996.  
  1997.          AdeptTimeLeft
  1998.          AdeptCurPos
  1999.          AdeptSayGen
  2000.          AdeptPlayMM
  2001.          Adept16BitCRC
  2002.          Adept32BitCRC
  2003.          AdeptCheckForMail
  2004.          AdeptChangeGroup
  2005.          AdeptSetBit
  2006.          AdeptUnsetBit
  2007.          AdeptCheckBit
  2008.          AdeptGetVar
  2009.          AdeptPutVar
  2010.          AdeptPrint
  2011.          Print
  2012.          AdeptPrintL
  2013.          Printf
  2014.          AdeptCall
  2015.      32
  2016.  
  2017.  
  2018.  
  2019.  
  2020.  
  2021.          AdeptInput
  2022.          AdeptSend
  2023.          AdeptRecv
  2024.          AdeptMenu
  2025.          AdeptConvert
  2026.          AdeptCls
  2027.          AdeptWrite
  2028.          AdeptRead
  2029.          AdeptFile
  2030.          AdeptMessage
  2031.          AdeptShow
  2032.          AdeptSleep
  2033.          AdeptInKey
  2034.          AdeptWaitKey
  2035.          AdeptPutKey
  2036.          AdeptCheckCard
  2037.          AdeptSetTimer
  2038.          AdeptTimedInkey
  2039.          AdeptTimerUp
  2040.          AdeptLocation
  2041.          AdeptHitReturn
  2042.          AdeptMore
  2043.          AdeptPause
  2044.  
  2045.          AChatSendMsg     - Multi-node chat
  2046.          AChatGetMsg      - Multi-node chat
  2047.          AChatDeleteAll   - Multi-node chat
  2048.          AChatUnavailable - Multi-node chat
  2049.  
  2050.          AdeptCheckCard   - Validate credit card
  2051.  
  2052.          -- Userbase minipulation functions --
  2053.  
  2054.          AdeptGetUser     - Get a user and pull their record into a temp var
  2055.          AdeptNextUser    - Get next user in the file and pull into a temp
  2056.                             var
  2057.          AdeptPrevUser    - Get prev user in the file and pull into a temp
  2058.                             var
  2059.          AdeptGetUserVar  - Get functions for temp user in memory
  2060.          AdeptPutUserVar  - Put functions for temp user in memory
  2061.          AdeptSaveUser    - Saved the temp memory vars to users record
  2062.  
  2063.  
  2064.  
  2065.  
  2066.  
  2067.  
  2068.  
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074.  
  2075.      33
  2076.  
  2077.  
  2078.  
  2079.  
  2080.  
  2081.      ________________________________________________
  2082.      _ _ CTRL AND OTHER KEYS AND THEIR RETURN CODES _
  2083.      ________________________________________________
  2084.  
  2085.        CTRL_A = 1        CTRL_B = 2        CTRL_C = 3        CTRL_D = 4
  2086.        CTRL_E = 5        CTRL_F = 6        CTRL_G = 7        CTRL_H = 8
  2087.        CTRL_I = 9        CTRL_J = 10       CTRL_K = 11       CTRL_L = 12
  2088.        CTRL_N = 14       CTRL_O = 15       CTRL_P = 16       CTRL_Q = 17
  2089.        CTRL_R = 18       CTRL_S = 19       CTRL_T = 20       CTRL_U = 21
  2090.        CTRL_V = 22       CTRL_W = 23       CTRL_X = 24       CTRL_Y = 25
  2091.        CTRL_Z = 26
  2092.        HOME   = 71+1024  UP     = 72+1024  PGUP   = 73+1024  BS     = 24
  2093.        FWD    = 77+1024  END    = 79+1024  DN     = 80+1024  PGDN 1+1024
  2094.        INS    = 82+1024  DEL    = 83+1024  LEFT   = 75+1024  RIGHT  = 77+1024
  2095.  
  2096.  
  2097.  
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104.  
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.  
  2117.  
  2118.  
  2119.  
  2120.  
  2121.  
  2122.  
  2123.  
  2124.  
  2125.  
  2126.  
  2127.  
  2128.  
  2129.  
  2130.  
  2131.  
  2132.  
  2133.  
  2134.  
  2135.      34
  2136.  
  2137.  
  2138.  
  2139.  
  2140.  
  2141.      ____________________
  2142.      _ _ REPORTING BUGS _
  2143.      ____________________
  2144.  
  2145.      If you are reporting a bug, please, try to be as specific as possible.
  2146.      I.E. - "The mailer is broken" doesn't give us any idea as to what is
  2147.             broken in the mailer.  Also please to not get discouraged if
  2148.             you are having problems.  Many times it's something simple
  2149.             that can be fixed with a quick phone call.  So please leave
  2150.             a phone number you may be reached at.                 
  2151.  
  2152.  
  2153.      Use the form below to report bugs that you find in the software. This is
  2154.      the ONLY accepted way to report a bug.
  2155.  
  2156.      === AdeptXBBS Bug Report Form ==========================================
  2157.      =                                                                      =
  2158.      = This form has been created to allow a more organized approach to bug =
  2159.      = reporting. Please fill it out and send it to julies@adeptsoft.com,   =
  2160.      = netmail it to 1:231/1320.0@FidoNet, or FTP to adeptsoft.com.         =
  2161.      =                                                                      =
  2162.      = The current bug list can be found on the support bbs FTP site in the =
  2163.      = BUG_REPORTS directory or by FREQing it from 1:231/1320.0@FidoNet     =
  2164.      = using the magic name of BUGLIST                                      =
  2165.      =                                                                      =
  2166.      = Only report one bug/problem per form please. This will allow better  =
  2167.      = tracking.                                                            =
  2168.      =                                                                      =
  2169.      = *Do Not Use This Form To Ask For New Features*                       =
  2170.      ========================================================================
  2171.  
  2172.      ---8<----cut here----8<---
  2173.  
  2174.      Date          : ________
  2175.      Sysop Name    : _____________________________________
  2176.      E-Mail Address: _____________________________________
  2177.      Fido Address  : _____________________________________
  2178.      BBS Number    : _____________________________________
  2179.      Voice Number  : _____________________________________
  2180.  
  2181.  
  2182.      What version of AdeptXBBS are you running?   : ___________
  2183.      What version of Gatekpr.Exe are you running? : ___________
  2184.  
  2185.      Put an 'X' for which area this bug report is in reference to:
  2186.  
  2187.      _ File Area
  2188.      _ NNTP
  2189.      _ Telnet
  2190.      _ IRC
  2191.      _ Mailer (FidoNet)
  2192.      _ Menu System (.menu files and commands)
  2193.      _ Message Area
  2194.      _ Offline Mail
  2195.      35
  2196.  
  2197.  
  2198.  
  2199.  
  2200.  
  2201.      _ Meta Variables
  2202.      _ REXX
  2203.      _ Documentation
  2204.      _ Interface
  2205.      _ Gatekpr (* MUST include your GateKpr.Ctl, AREA.CONTROL, FILE.CONTROL,
  2206.                   Message_Areas and the packet that is causing problems *)
  2207.  
  2208.      Has this problem occurred more than once?  ____________________________
  2209.      Can you reproduce it? ________________________________________________
  2210.  
  2211.      What problem are you having? (Be as detailed and specific as possible,
  2212.      if you can repeat the problem please try to explain as best as possible
  2213.      how to exactly make it occur):
  2214.      ______________________________________________________________________
  2215.      ______________________________________________________________________
  2216.      ______________________________________________________________________
  2217.      ______________________________________________________________________
  2218.      ______________________________________________________________________
  2219.      ______________________________________________________________________
  2220.      ______________________________________________________________________
  2221.      ______________________________________________________________________
  2222.      ______________________________________________________________________
  2223.      ______________________________________________________________________
  2224.      ______________________________________________________________________
  2225.      ______________________________________________________________________
  2226.  
  2227.      Is there a good time we can call you if we need some more verbal
  2228.      information relating to this problem report? _________________________
  2229.  
  2230.      ---8<----cut here----8<---
  2231.  
  2232.      *** If error is with GateKeeper, did you include your control files and
  2233.      any packets which cause Gatekeeper to run erratically? (Control files 
  2234.      include GateKpr.Ctl, AREA.CONTROL, FILE.CONTROL, Message_Areas)
  2235.      Inclusion of these files will greatly aid in the resolution of your
  2236.      problem.
  2237.  
  2238.      "Gather enough information, and the solution will be obvious"
  2239.  
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  
  2249.  
  2250.  
  2251.  
  2252.  
  2253.  
  2254.  
  2255.      36